package org.jeecg.modules.demo;
import com.alibaba.fastjson.JSONObject;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 微信支付演示主类
 */
public class WechatPayDemo {
    public static void main(String[] args) {
        try {
            // 1. 配置参数 - 请替换为实际值
            WechatPayConfig config = new WechatPayConfig(
                    "wx77728b3bf1f20d3d",  // appid
                    "1cdfc6c4798eebd8772b8049dc056f0d",  // appsecret
                    "1526566731",  // 商户号
                    "5016A4346D166D29A8B206638C62BC24CD3984E3",  // 商户证书序列号
                    "ANFINE98XINGXINANFINE98XINGXINAN",  // APIv3密钥
                    new File("C:\\web_serverah\\apiclient_cert.pem"),  // 商户证书文件
                    new File("C:\\web_serverah\\apiclient_key.pem"),  // 商户私钥文件
                    "https://603r02036m.goho.co/jeecg-boot/vedio_order/vedioOrder/payNotify"  // 支付结果通知地址
            );

            // 2. 初始化支付服务
            WechatPayService payService = new WechatPayService(config);

            // 3. 生成订单号 (示例：前缀+时间戳)
            String outTradeNo = "TEST" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());

            // 4. 创建JSAPI支付订单
            System.out.println("创建支付订单...");
            JSONObject result = payService.createJsapiOrder(
                    outTradeNo,          // 商户订单号
                    1,                   // 订单金额，单位：分
                    "测试商品",           // 商品描述
                    "用户的openid"       // 支付用户的openid
            );

            // 5. 处理返回结果
            System.out.println("订单创建响应:");
            System.out.println(result.toJSONString());

            // 6. 提取prepay_id，用于前端调起支付
            if (result.containsKey("prepay_id")) {
                String prepayId = result.getString("prepay_id");
                System.out.println("\n获取到prepay_id: " + prepayId);
            }

            // 7. 关闭资源
            payService.close();

        } catch (Exception e) {
            System.err.println("支付操作失败:");
            e.printStackTrace();
        }
    }
}
